<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <ul id="box">
    <li>新闻</li>
    <li>汽车</li>
    <li>美女</li>
  </ul>
    <script>
      // js 的三个组成部分
        //  ECMAScript（js语法标椎）  DOM  BOM
        //  es5版本
        //  es6的介绍 （是对js的ECMAScript的语法更新 es7 es8 es9 es10）
        // es6 2015 发布的 js的语法标准
        // es6的创建变量 let const 
        var x=88;
        let y=99;
        const z=100;
        // 在es5中的作用域 是函数作用域
        //区别 1. let 和const 会产生块级作用域 {}

        if(true){
          let myname="王德发"
          const sex="男"
        }
        function run() {  
          var age=18;
        }
        // console.log(sex) //sex 在块级作用域中已经成为局部变量
        // console.log(myname)//myname 在块级作用域中已经成为局部变量
        // console.log(age)
        let lis=document.querySelectorAll("#box li")
        for(let i=0;i<lis.length;i++){
          lis[i].onclick=function(){
            alert(i)
          }
        }
        // 区别2.let 和const 不能重复声明
        let myhobby="吃睡玩";
        // let myhobby="哈哈"// 错误 不能重复声明
        // 区别3： let 和const 不存在变量提升
               // let 和const 存在暂时性死区 （在声明之前不能提前使用，报错）
        function  say() {  
           console.log(city)//undefined 
            var city="哈尔滨"
        }

         function  eat() {
          //  console.log(province)//报错 不存在变量提升
            let  province="黑龙江"
            province="海南"
        }
        say()
        eat()
        // 区别4： const 是用来声明常量的 声明后不能重新赋值
          const myip="127.98.0.1"
          // myip="192.168.123.1" //const 不能重新赋值
          // console.log(myip)
          const routes=[
            {path:"/home",name:"home"},
            {path:"/mine",name:"mine"},
            {path:"/cart",name:"cart"}
          ]
      
          
    </script>
</body>
</html>